5.4.2 既存のデータ型の変更
リストや辞書といった既存のコレクション型の一部の動作を変えたい場合
collections.User*を使う
IMO:ようやくUser*クラスの使い所が分かった!
組み込みクラスの継承はうまくいかない
dictを継承して__getitem__を定義(オーバーライド)した
__getitem__()のようなメソッドをオーバライドしても、ほとんどの辞書メソッドはそのオーバライドされたメソッドを使わない。
getはオーバーライドされた__getitem__を使わない
組み込みのコレクション型はパフォーマンスを意識して作られており、多くのメソッドは高速化のためにインラインコードを使っている
組み込みのコレクション型は、パフォーマンスを上げるために継承されないという前提で作られている
(感想:FastAPIのコードでstrEnumを作るケースはいいのだろうか?)
dictではなくUserDictを継承し、元の辞書へのアクセスではself.dataを使う。
パフォーマンスが重視されるケースでcollections.User*を使うならば計測せよ